<?php

namespace Modules\Admin\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\RoleRequest;
use Spatie\Permission\Models\Role;

class RoleController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {

//        后盾自带方法
        $roles = Role::where('name','!=',config('hd_module.webmaster'))->get();
//        dump($roles->toArray());
        return view('admin::role.index',compact('roles'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(RoleRequest $request)
    {
//        可以进来
//        dd(111);
//        因为这个方法是向军老师自己写的，没有模型，但是他吧所有方法都封装好了，我们直接用就行了
//       不用像以前那样先获得到他post表单里面的值，再往进添加
        Role::create([
            'title'=>$request->input('title'),
            'name'=>$request->input('name'),
        ]);

//        添加成功后，设置闪存并跳转
        session()->flash('success','添加角色成功，欢迎使用角色给你');
        return redirect()->route('role.index');

//        $post = $request->all();

//        dd($post);

    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(RoleRequest $request,$id)
    {
//        可以进来
//        dd(111);

//        dd($id);
        $res = Role::find($id);
//        dd($res->toArray());
        $res->name = $request->input('name');
        $res->title = $request->input('title');
        $res->save();
        session()->flash('success','恭喜编辑成功');
        return redirect()->route('role.index');
//        编辑写好写删除
    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {

//        在这加判断，其实这张表里面是有站长的，所以你不能通过地址栏传参进行删除站长的操作
        $user = Role::find($id);
//        dd($user->name);
        if ($user->name==config('hd_module.webmaster')){

            session()->flash('danger','你没有权限操作此方法');

            return back();

        }

//        可以进来
//        dd(111);
        Role::destroy($id);

        session()->flash('success','恭喜删除成功，切记不要轻易删除呦');

        return back();
//        角色的增删改查写好，写分配权限
    }

//    加载分配权限模板
    public function fenpei($id){
//        dd($id);
        if($id==1){
            session()->flash('danger','你没有操作权限！');
            return back();
        }
        $role = Role::find($id);
//        下一步，进行商品分类


//        其实就是读文件嘛
       $permission =  \HDModule::getPermissionByGuard('admin');
//       dd($permission);
//       dd($permission);
        return view('admin::role.permission',compact('permission','id','role'));
    }

//    确定分配权限方法
    public function permission(Request $request,$roled){
//        dd($roled);
//        把对应的权限与对应的角色进行同步
//        好了，历经磨难参数终于传过来了
        $role = Role::find($roled);
//        dd($role->toArray());
//        $role需是一个集合对象才行
//        使用手册当中的方法同步权限
        if (!$request->input('name')){

            session()->flash('danger','请至少分配一个权限！！！！');
            return back();

        }
        $role->syncPermissions($request->input('name'));
//        设置闪存并跳转

        session()->flash('success','恭喜你权限添加成功');
        return back();
    }
//    接下来，给用户分配角色

}
